/***********************************************
 **** 版权声明处 **
 ****  为了方便阅读和维护，请严格遵守相关代码规范，谢谢   ****
 *******************************************/
package com.hnisi.tankgauge
{
	import com.gskinner.motion.GTween;
	import com.gskinner.motion.easing.Linear;
	
	import flash.events.Event;
	
	import spark.components.supportClasses.SkinnableComponent;
	
	/*******************************************
	 **** @author huangjixin,@date 2012-6-29, @time 下午4:21:50 **
	 **** 请一句话表述该类主要作用  **
	 *******************************************/
	public class TankGauge extends SkinnableComponent
	{
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		// private 类私有静态变量和静态常量声明处。（全部大写，使用下划线进行分割）
		// 例如：private static const EXAMPLE:String = "example";
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		// public 类公有静态变量和静态常量声明处。（全部大写，使用下划线进行分割）
		// 例如：public static const EXAMPLE:String = "example";
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		
		
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		// private 私有变量声明处，请以“_”开头定义变量
		// 例如：private var _example:String;
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		private var _tween:GTween;
		
		private var _tankValue:Number;
		protected var tankValueChanged:Boolean;
		
		private var _fillColor:uint;
		
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		// public 公有变量声明处
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		
		
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		// 构造函数，初始化相关工作可以放在里面
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		public function TankGauge()
		{
			super();
			
			tankValue = 0.5;
			fillColor = 0xff0000;
			
//			_tween = new GTween(this, 1, {'tankValue':tankValue}, {'ease':Linear.easeNone});
		}//构造函数结束
		
		
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		// getter和setter函数
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		[Bindable(event="tankValueChange")]
		/**
		 * 油桶百分比值； 
		 * @return 
		 * 
		 */
		public function get tankValue():Number
		{
			return _tankValue;
		}
		
		public function set tankValue(value:Number):void
		{
			if( _tankValue !== value)
			{
				_tankValue = value;
				dispatchEvent(new Event("tankValueChange"));
				invalidateProperties();
				tankValueChanged = true;
			}
		}
		
		
		[Bindable(event="fillColorChange")]
		/**
		 * 填充色； 
		 * @return 
		 * 
		 */
		public function get fillColor():uint
		{
			return _fillColor;
		}
		
		public function set fillColor(value:uint):void
		{
			if( _fillColor !== value)
			{
				_fillColor = value;
				dispatchEvent(new Event("fillColorChange"));
			}
		}
		
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		// 相关事件响应函数和逻辑函数存放处
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		
		
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		// override 覆盖函数
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		override protected function partAdded(partName:String, instance:Object):void{
			super.partAdded(partName,instance);
		}
		
		override protected function partRemoved(partName:String, instance:Object):void{
			super.partRemoved(partName,instance);
		}
		
		override protected function commitProperties():void{
			super.commitProperties();
			
			if(tankValueChanged){
				tankValueChanged = false;
				
//				_tween.proxy.tankValue = tankValue;
			}
		}

	}//类结束
}//包结束